﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

using Controller;
using Model;

namespace WCFService
{
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
    // [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
    public class WilkeService : IWilkeService
    {
        Controller.Controller wilkeSystem;

        public WilkeService()
        // Controller.
        {
            wilkeSystem = new Controller.Controller();
        }



        #region Bruger

        public int OpretBruger(string navn, string adresse, int postnr,
            string by, Int64 kontonr, int regnr, string mail, bool administrator, int telefonnr, string password, string kontraktType)
        {
            return wilkeSystem.OpretBruger(navn, password, administrator, mail, telefonnr, adresse, postnr, by, true, kontonr, regnr, kontraktType);
        }

        public Bruger[] VisBrugere()
        {
            return wilkeSystem.VisBrugere().OrderBy(i => i.navn).ToArray();
        }

        public Bruger FindBruger(int personID)
        {
            return wilkeSystem.FindBruger(personID);
        }

        public Bruger RetBruger(int personID, string navn, string adresse, int postnr, string by, Int64 kontonr,
            int regnr, string email, bool administrator, bool aktiv, int telefonnr, string password, string kontraktType)
        {
            return wilkeSystem.RetBruger(personID, navn, adresse, postnr, by, email, telefonnr, password,
                kontonr, regnr, administrator, aktiv, kontraktType);
        }

        #endregion


        #region Projekt

        public int OpretProjekt(string projektnavn, DateTime projektstart, DateTime projektslut)
        {
            return wilkeSystem.OpretNyProjekt(projektnavn, projektstart, projektslut);
        }

        public Projekt[] VisProjekter()
        {
            return wilkeSystem.VisProjekter().OrderBy(i => i.projektnavn).ToArray();
        }

        public Projekt FindProjekt(int projektNr)
        {
            return wilkeSystem.FindProjekt(projektNr);
        }

        #endregion


        #region Kontrakt

        public int OpretKontrakt(Decimal timeLøn, string kontraktType)
        {
            return wilkeSystem.OpretKontrakt(timeLøn, kontraktType);
        }

        public Kontrakt[] VisKontrakter()
        {
            return wilkeSystem.VisKontrakter().OrderBy(i => i.Kontrakttype).ToArray();
        }

        public Kontrakt FindKontrakt(int kontraktNr)
        {
            return wilkeSystem.FindKontrakt(kontraktNr);
        }

        #endregion


        public Timer RegistrerTimer(DateTime timeStart, DateTime timeSlut, DateTime dato, Bruger bruger, Projekt projekt, string kommentar, bool timeGodkendelse, bool timeUdbetalt)
        {
            return wilkeSystem.RegistrerTimer(timeStart, timeSlut, dato, bruger, projekt, kommentar, timeGodkendelse, timeUdbetalt);
        }
    }
}